Communications devices have multiple obstacles to the seamless exchange of data. Whether these devices are on Intranets or on the public Internet, various security and addressing devices could disrupt their communication. One device that can disrupt communication is a firewall. While the benefits of a firewall provide a higher security level, arbitrary ports are blocked which increase the possibility of communications interference. Another device that can disrupt the exchange of data is a Network Address Translator (NAT). NATs have the benefit of allowing multiple devices on a private network to share the same global IP address, by handing out private addresses behind these devices and masking these private addresses with that shared global address. In this process several assumptions are made that could disrupt data exchange. This can include overlap in private addressing. When applications that run on communications devices that make addressing assumptions, the data exchange may not occur as expected, resulting in a poor usability experience.
In addition to the above described communication disruptions, there are only a few address blocks that are designated as private. Deployment of NATs leads many home and corporate environments to use the same addresses in their private networks. In some cases, two machines in different environments may have the same IP address. Thus without some out of band mechanism it is impossible for the application to identify to which destination computing device the application is attempting to send the traffic. There are many solutions currently available to traverse NATs and firewalls. These solutions typically require that applications include a customized implementation that allows for end-to-end communication. Examples of custom NAT traversal approaches include Simple Traversal of UDP through NATs (STUN) and Traversal using Relay NAT (TURN).